#pragma once


#include <geometry_msgs/msg/point.hpp>
#include <geometry_msgs/msg/vector3.hpp>
#include <nlohmann/json.hpp>
#include <pcl/features/normal_3d.h>
#include <pcl/point_cloud.h>
#include "rviz_custom_plugins/models/point_normal.h"


using nlohmann::json;



namespace rviz_custom_plugins 
{


namespace models 
{


class PointNormals
{

public:

    PointNormals() = default;

    ~PointNormals() = default;

    std::vector<PointNormal> points;

};


inline void to_json(json& j, const PointNormals& points)
{
    j = json{
        {"points", points.points}
    };
}


inline void from_json(const json&j, PointNormals& points)
{
    points.points = j.at("points");
}



}


}


Q_DECLARE_METATYPE(rviz_custom_plugins::models::PointNormals);